/**
* File browser
* Plugin pro procházení adresáře s nahranými soubory 
* ikony jednotlivých typů souborů jsou dodávané spolu s pluginem v adresáři icons
*/

$.texyla("setDefaults", {
	fileBrowserPath: "%texyla_base%/plugins/file-browser/file-browser.php",
	fileBrowserWindowDimensions: [370, 370],
	fileBrowserIconsPath: "%texyla_base%/plugins/file-browser/icons/%var%.png"
});

$.texyla("initPlugin", function () {
	this.options.fileBrowserPath = this.expand(this.options.fileBrowserPath);
});

// tlačítko
$.texyla("addButton", "file_browser", function () {
	var _this = this;

	var el = $('<div><p class="wait">' + this.lng.wait + '</p></div>');

	// zobrazit okno
	this.window({
		name: "fileBrowser",
		el: el,
		title: this.lng.fileBrowserHeading
	});

	// nahrát obrázky
	$.getJSON(this.options.fileBrowserPath, {}, function (data) {
		var browser = $('<div class="file-browser"></div>').height(300);
		el.empty().append(browser);

		// funkce na vložení odkazu na soubor do stránky
		function insFile(file) {
			return function () {
				_this.texy.replace('"' + file.name + ' .(' + file.title + ')":' + file.href);
				el.dialog("close");
			}
		}
		
		//funkce na vložení obrázku do stránky
		function insImage(file) {
			return function () {
				_this.texy.replace('[* ' + file.href + ' ' + file.imagesize[0] + 'x' + file.imagesize[1] + ' .(Image ' + file.name + ') *]');
				el.dialog("close");
			}
		}

		// projít soubory v adresáři
		function generateDirectory(data, level) {
			var list = $("<ul></ul>");
			for (var i = 0; i < data.length; i++) {
				var file = data[i];

				if (file.filetype === 'dir' && file.subdir !== null) {
						var v = $('<li></li>');
						var w = $(
						'<div><img src="' + _this.expand(_this.options.fileBrowserIconsPath, file.icon) + '" width="16" height="16"> ' +
						'<strong class="label">' + file.name + '</strong><div>'
						);
						// get subdirectory files
						var x = generateDirectory(file.subdir, (level + 1));
						// Generate html
						w.appendTo(v);
						x.appendTo(v);
						v.appendTo(list);
				} else if (file.filetype === 'dir' && file.subdir === null) {
						$(
						'<li>' +
						'<img src="' + _this.expand(_this.options.fileBrowserIconsPath, file.icon) + '" width="16" height="16"> ' +
						'<strong class="label">' + file.name + '</strong>' +
						'</li>'
						).appendTo(list);
				} else {
						var v = $(
						'<li>' +
						'<img src="' + _this.expand(_this.options.fileBrowserIconsPath, file.icon) + '" width="16" height="16"> ' +
						'<strong class="label">' + file.name + ' [' + file.size + ' kB]</strong>' +
						'</li>'
						);
						
						if (file.icon === 'img') {
							// file is image
							v.click(insImage(file)).appendTo(list);
						} else {
							v.click(insFile(file)).appendTo(list);
						}
				}
			}
			return list;
		}
		browser.append(generateDirectory(data.files, 0));
		$('ul div').collapsor();
	});
});
